#ifndef RS485_H
#define RS485_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 配置串口参数
 *
 * @param fd 打开的串口文件描述符
 * @param baudrate 波特率 (如 9600, 115200 等)
 * @return 0 成功, -1 失败
 */
int configure_serial(int fd, int baudrate);

/**
 * @brief 初始化RS485通信
 *
 * @param device 设备路径 (如 "/dev/ttyS2")
 * @param baudrate 波特率
 * @return 文件描述符，-1表示失败
 */
int rs485_init(const char *device, int baudrate);

/**
 * @brief 读取光栅尺编码器数据
 *
 * @param fd RS485文件描述符
 * @param encoder_value 输出参数，存储读取到的编码器值
 * @return 0 成功, -1 失败
 */
int rs485_read_optical_encoder(int fd, uint32_t *encoder_value);

/**
 * @brief 初始化光栅尺通信
 *
 * @return 0 成功, -1 失败
 */
int grating_scale_init(void);

/**
 * @brief 读取光栅尺当前值
 *
 * @param current_value 输出参数，存储当前光栅尺读数
 * @return 0 成功, -1 失败
 */
int grating_scale_read_current_value(uint32_t *current_value);

#ifdef __cplusplus
}
#endif

#endif // RS485_H